import request from './request';

/**
 * 获取角色列表
 * @param {Object} params - 查询参数
 * @param {number} params.page - 页码
 * @param {number} params.pageSize - 每页数量
 * @param {string} params.keyword - 搜索关键词
 * @returns {Promise}
 */
export function listRoles(params) {
  return request({
    url: '/authority/roles',
    method: 'get',
    params
  });
}

/**
 * 获取角色详情
 * @param {number} id - 角色ID
 * @returns {Promise}
 */
export function getRole(id) {
  return request({
    url: `/authority/roles/${id}`,
    method: 'get'
  });
}

/**
 * 获取角色权限
 * @param {number} id - 角色ID
 * @returns {Promise}
 */
export function getRolePermissions(id) {
  return request({
    url: `/role-permissions/${id}`,
    method: 'get'
  });
}

/**
 * 设置角色权限
 * @param {number} id - 角色ID
 * @param {Array} permissions - 权限ID数组
 * @returns {Promise}
 */
export function setRolePermissions(id, permissions) {
  return request({
    url: `/role-permissions`,
    method: 'post',
    data: { role_id: id, permission_ids: permissions }
  });
}

/**
 * 获取角色用户
 * @param {number} id - 角色ID
 * @returns {Promise}
 */
export function getRoleUsers(id) {
  return request({
    url: `/user-roles`,
    method: 'get',
    params: { role_id: id }
  });
}

/**
 * 设置角色用户
 * @param {number} roleId - 角色ID
 * @param {number} userId - 用户ID
 * @returns {Promise}
 */
export function setRoleUser(roleId, userId) {
  return request({
    url: `/user-roles`,
    method: 'post',
    data: { role_id: roleId, user_id: userId }
  });
}

/**
 * 批量设置角色用户（通过多次调用单个设置接口实现）
 * @param {number} roleId - 角色ID
 * @param {Array} userIds - 用户ID数组
 * @returns {Promise}
 */
export function setRoleUsers(roleId, userIds) {
  // 创建一个Promise数组，每个Promise对应一个用户角色分配请求
  const promises = userIds.map(userId => setRoleUser(roleId, userId));
  // 返回一个Promise，当所有请求都完成时解析
  return Promise.all(promises);
}

// 导出authority.js中的角色相关函数
export { createRole, updateRole, deleteRole } from './authority';